﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace robot
{

    abstract class Objet
    {
        new public virtual string ToString()
        {
            return "Objet";
        }
    }

    class Chaise : Objet
    {
        private int nbPieds;
        public int NbPieds
        {
            set {
                if(value >= 0)
                    nbPieds = value;
            }
            get
            {
                return nbPieds;
            }
        }

        private String couleur;
        public String Couleur
        {
            set
            {
                    couleur = value;
            }
            get
            {
                return couleur;
            }
        }

        public override string ToString()
        {
            return "Chaise à " + NbPieds + " pieds et de couleur " + Couleur.ToString();
        }

        public Chaise()
            : this(4, "rouge")
        {
        }

        public Chaise(int nbPieds, String c)
        {
            NbPieds = nbPieds;
            Couleur = c;
        }
    }

    class Table : Objet
    {
        private float longeur;
        public float Longeur
        {
            set
            {
                if (value >= 0)
                    longeur = value;
            }
            get
            {
                return longeur;
            }
        }
        private float largeur;
        public float Largeur
        {
            set
            {
                if (value >= 0)
                    largeur = value;
            }
            get
            {
                return largeur;
            }
        }
        public override string ToString()
        {
            return "Table de longeur " + Longeur + " et de largeur " + Largeur;
        }

        public Table() : this(18.0f, 78.0f)
        {
        }

        public Table(float longeur, float largeur)
        {
            Longeur = longeur;
            Largeur = largeur;
        }
    }

    class Bouteille : Objet
    {
        private float volume;
        public float Volume
        {
            set
            {
                if (value >= 0)
                    volume = value;
            }
            get
            {
                return volume;
            }
        }
        private string contenu;
        public string Contenu
        {
            set
            {
                contenu = value;
            }
            get
            {
                return contenu;
            }
        }

        public override string ToString()
        {
            return "Bouteille de " + Contenu + " de " + volume + " litres";
        }

        public Bouteille() : this(1.0f, "Vodka")
        {
        }

        public Bouteille(float volume, string contenu)
        {
            Volume = volume;
            Contenu = contenu;
        }

        public static Bouteille operator ++(Bouteille b)
        {
            b.volume++;
            return b;
        }

        public static Bouteille operator --(Bouteille b)
        {
            b.volume--;
            if (b.volume < 1)
                b.volume = 1;
            return b;
        }
    }
}
